package com.xmall.define.dto.order;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xmall.define.dict.OrderStatusEnum;
import com.xmall.define.dict.PayTypeEnum;
import com.xmall.define.base.BaseDto;
import com.xmall.define.dict.PayPlatformEnum;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;

@Getter
@Setter
public class OrderDto extends BaseDto {

    /**
     * 用户ID
     */
    private Long memberId;

    /**
     * 用户姓名
     */
    private String memberName;

    /**
     * 订单编号
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long orderSn;

    /**
     * 第三方交易编号
     */
    private String tradeNo;

    /**
     * 订单状态（0待付款 1待发货 2待收货 3已完成 4已评价 5已取消）
     */
    private Integer orderStatus;
    private String orderStatusName;

    /**
     * 支付方式（0余额 1微信 2支付宝）
     */
    private Integer payType;

    private String payTypeName;

    /**
     * 支付平台（0移动端H5 1移动端App 2电脑端 3小程序）
     */
    private Integer payPlatform;
    private String payPlatformName;

    /**
     * 商品金额
     */
    private BigDecimal productAmount;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 运费金额
     */
    private BigDecimal deliveryAmount;

    /**
     * 支付金额
     */
    private BigDecimal payAmount;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 发货时间
     */
    private Date deliveryTime;

    /**
     * 收货时间
     */
    private Date finishTime;

    /**
     * 评论时间
     */
    private Date evaluateTime;

    /**
     * 取消时间
     */
    private Date cancelTime;

    /**
     * 售后状态（0可用 1不可用）
     */
    private Integer afterSaleStatus;

    public String getPayTypeName() {
        return PayTypeEnum.getNameByType(payType);
    }

    public String getOrderStatusName() {
        return OrderStatusEnum.getNameByStatus(orderStatus);
    }

    public String getPayPlatformName() {
        return PayPlatformEnum.getNameByType(payPlatform);
    }
}
